/**
 * 用户菜单权限DTO - 用户权限和菜单信息的响应数据传输对象
 *
 * 开发人员：徐少洋
 * 开发时间：2025-10-25 至 2025-10-28
 * 模块职责：封装用户权限信息、角色信息、菜单权限等，用于前端权限控制和菜单显示
 *
 * 技术要点：
 * - 多租户用户信息和企业信息封装
 * - 用户角色和权限列表管理
 * - 菜单项结构化定义和可见性控制
 * - 嵌套类设计支持复杂数据结构
 * - Lombok简化DTO编写和构建
 *
 * 开发故事：负责用户权限DTO的设计和实现，与安全认证和前端路由深度配合，支持动态菜单和权限控制功能。
 */
package com.pbl.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 用户菜单权限数据传输对象 - 封装用户的权限信息、角色信息和菜单权限
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserMenuDto {
    private Long userId;
    private String username;
    private Long enterpriseId;
    private String enterpriseName;
    private List<String> roles;
    private List<String> permissions;
    private List<MenuItem> menus;

    /**
     * 菜单项数据传输对象 - 定义菜单的基本信息和显示属性
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class MenuItem {
        private String name;
        private String path;
        private String icon;
        private boolean visible;
    }
}

